Ravin' by Laverne Ruby ------ -- ------- ---- Once upon a midday dreary, while I pondered weak and weary, Over many a quaint and curious volume of computer lore, As I nodded, nearly snoring, suddenly there came a roaring, As of someone gently boring, boring through tape number four. "'Tis the octal load," I muttered, "reading cards into the core -- Only this and nothing more." Ah, distinctly I'm recalling all about the sound appalling And my skin began a-crawling as I heard that sound once more. Eagerly I wished the morrow, vainly I had sought to borrow >From my booze surcease of sorrow--sorrow that I had this chore-- Working on this vile computer which the codes all deplore, Nameless here forevermore. Then the flutter, sad, unsteady, of the light that flashed, "Not Ready" Thrilled me--filled me--with fantastic terrors never felt before; And to still my heart's quick pounding, fiercely I began expounding "'Tis the octal load resounding as it reads cards into core, Just the octal load resounding as it reads cards into core, It is this, and nothing more. Presently my soul grew sicker, for the lights began to flicker, And I thought I heard a snicker from behind the tape drive door. Hereupon discarding my vanity, hopeing but to save my sanity, Uttered I some choice profanity of the rugged days of yore, For the grim machine was looping! I, to display console, tore-- Darkness there, and nothing more. Deep into that blank scope staring, long I stood there, cursing,swearing, Sobbing, screaming screams no mortal ever dared to scream before; But the looping was unbroken, and the darkness gave no token, And the only word there spoken was the wispered word (CENSORED), This I wispered, and an echo murmured back the word (CENSORED), Merely this, and nothing more, Back then toward the printer speeding, all my soul within me bleeding, Soon again I heard the roaring, somewhat louder than before. "Surely," said I, "as sure as heck, something's wrong with my octal deck, Let me see then, let me check, and this mystery explore-- Let my heart be still a moment, and this mystery explore-- 'Tis the cards, and nothing more!" Open here I flung a listing, with the noisy roar persisting, Out there fluttered two control cards, cards I had forgot before; Not the least deferment made I, not a moment stopped or stayed I, Launching on a foul tirade, I started up the beast once more. But, the monster, after reading both cards into the core, Blinked, and sat, and nothing more. Then this foul machine beguiling my sad fancy to reviling. Turned I back toward the printer, answer then I did implore; "Though my nerves are all a-splinter, thou," I said, "art sure no stinter, Ghastly, grim and ancient printer, printer of computer lore. Tell me what the trouble here is, for I surely need no more!" Quoth the printer, "Nevermore!" Much I marveled this contraption should give birth to such a caption, Though it answer little meaning--little relevancy bore; For it's sure that vile invective would deter the best detective, Render such a one defective, stupid as a sophomore. Why should such a steel invention as the printer on the floor, Say such a word as "Nevermore?" But the printer, sitting lonely on the concrete floor, spoke only That one word as if by saying that one word it jinxed a score; Nothing further then was written, and it purred on like a kitten, 'Till I stood there, conscience-smitten, "Other woes were fixed before-- On the morrow 'twill be ended, as my woes have flown before." Quoth the printer, "Nevermore!" Then methought the air grew smoggy, presently my head grew groggy, Gripped by madness, then I spoke, my voice containing thirst for gore, "Beast!" I cried, "Let Satan take thee! Let the devil roast and bake thee! After, get the fiends who make thee! Let them sizzle four by four! Let them sizzle, boil, and sputter! Let them fry forevermore!" Quoth the printer, "Nevermore!" "Monster!" said I,"Thing of evil! Black invention of the devil! By the Hell that fries below us, by the Fiend we both abhor! Tell this soul with sorrow shackled, the meaning of the word you cackled. What's this job that I have tackled, never mind the metaphor! Tell me just wherein I've failed, by signal, sign, or semaphore!" Quoth the printer, "Nevermore!" "Stop repeating words inanely, ghastly fiend," I shrieked insanely. "May the gods come and destroy thee, and my shattered nerves restore." While I stood my curse invoking, suddenly I started choking, For the printer started smoking, and I started for the door. "I'll win yet, machine infernal!" This I said and this I swore. Quoth the printer, "Nevermore!" And the monster, always whooping, still is looping, still is looping, In the self-same program looping, that elusive part the core. And its lights have all the seeming of a demon that is scheming, And the coders all blaspheming throw their programs on the floor-- And my soul from out those programs that lie scattered on the floor, Shall be lifted--nevermore! Sing this one to Michael Jackson's "Beat it" You're processing some words when your keyboard goes dead, Ten pages in the buffer, should have gone to bed, The system just crashed, but don't lose your head, Just BOOT IT, just BOOT IT. Better think fast, better do what you can, Read the manual or call your system man, Don't want to fall behind in the race with Japan, So BOOT IT, Get the system manager to BOOT IT, BOOT IT, Even though you'd rather shoot it. Don't be upset, it's only some glitch. All that you do is flip a little switch. BOOT IT, BOOT IT, Get right down and restitute it. Don't get excited, all is not lost. CP/M, UNIX or MS/DOS Just BOOT IT, boot it, boot it, boot it... You gotta have your printout for the meeting at two, The system says your jobs at the head of the queue, Right then the thing dies but you know what to do, BOOT IT. You always get so worried when the system runs slow, And when it finally crashes, man you feel so low, But computers make mistakes (they're only human you know) So BOOT IT, Call the local guru to BOOT IT, BOOT IT, Go ahead re-institute it. If you're not lucky, get the book off the shelf, But if you are, it'll do it itself. BOOT IT, BOOT IT, Then go find the guy who screwed it! Operating systems are built to bounce back, Whether it's a Cray or a Radio Shack. BOOT IT! BOOT IT! ============== Dear Sirs: I'd like to share with your readers an experience that I was recently fortunate to be part of. I'm a well-figured gal (36-22-34), with hazel eyes and blonde hair that hangs down to my rear. First of all, let me say that I'd never do anything to destroy my wonderful marriage of three years to my husband whom I'll call Zachary. But the honest, devoted little wife in me was quickly replaced by a hungry, crazed tigress when I encountered Hank (not his real name). I first met Hank at a vegetable & fruit store where I used to shop. He worked in the cucumber section. From the minute I first laid my eyes on him I knew that I'd want him to *********************************************************************** *********** OUTPUT TERMINATED BY OPERATOR ************ *********************************************************************** ============== Special Science Feature: All-Purpose METRIC Conversion Table. This chart will help to convert almost anything from the old system of measurement to the new. To convert back, simply stand on your head when using this chart. 1 inch = 2.4 centimeters 1 snail eater = 7.3 snail liters 1 pack + 1 liter = 1 liter of the pack 5 parking meters = 8.2 parking centimeters 10 cents = 1 dime 50,000 decibels = 1 Twisted Sister concert Cost of 1 ear operation = Mega-bucks (see last entry) 1 Tidal Wave = 47.92 Microwaves 64 kilobytes = Next to nothing ============== Here you have it folks, the original... Documentation Sex Quiz 1. What are the fallopian tubes? a. Bicycle tires b. A subway in Italy c. All of the above 2. What is a urethra? a. A female black singer b. The opposite of myrethra c. Something you hang on your door for Chrithmeth 3. What is an ovary? a. A book written by Flaubert b. A passing grade at school c. A famous WWII song 4. What is fellatio? a. A person who collects stamps b. Mr. Hornblower's first name c. A non-dairy whipped topping popular in Italy 5. What is a testicle? a. A test to see if you're ticklish b. One of the two parts of the Bible c. An octopus' arm 6. What is cunnilingus? a. A form of pasta b. The language of love c. An Irish airline 7. What is a gonad? a. A cheer for NAD high school b. A person who wanders from place to place c. A Moody Blues song 8. What is a vulva? a. A Swedish car b. The punching bag in your throat c. An engine part 9. What is a seminal vesicle? a. An indian boat b. A priest's retreat c. A discussion on the subject of veins and arteries 12. What is a penis? a. A salty snack you have with beer b. A Charles Shultz comic strip c. Liberace Boner Question: What is an Anus? a. Part of a famous black comedy team b. A planet--home of Superman c. A herbaceous plant Answers to these and many more thoroughly disgusting questions may, or may not appear in a future issue. ============== Real Programmers write in Fortran. Maybe they do now, in this decadent era of Lite beer, hand calculators and "user-friendly" software, but back in the Good Old Days, when the term "software" sounded funny and Real Computers were made out of drums and vacuum tubes, Real Programmers wrote in machine code. Not Fortran. Not RATFOR. Not, even, assembly language. Machine Code. Raw, unadorned, inscrutable hexadecimal numbers. Directly. Lest a whole new generation of programmers grow up in ignorance of this glorious past, I feel duty-bound to describe, as best I can through the generation gap, how a Real Programmer wrote code. I'll call him Mel, because that was his name. I first met Mel when I went to work for Royal McBee Computer Corp., a now-defunct subsidiary of the typewriter company. The firm manufactured the LGP-30, a small, cheap (by the standards of the day) drum-memory computer, and had just started to manufacture the RPC-4000, a much-improved, bigger, better, faster -- drum-memory computer. Cores cost too much, and weren't here to stay, anyway. (That's why you haven't heard of the company, or the computer.) I had been hired to write a Fortran compiler for this new marvel and Mel was my guide to its wonders. Mel didn't approve of compilers. "If a program can't rewrite its own code," he asked, "what good is it?" Mel had written, in hexadecimal, the most popular computer program the company owned. It ran on the LGP-30 and played blackjack with potential customers at computer shows. Its effect was always dramatic. The LGP-30 booth was packed at every show, and the IBM salesmen stood around talking to each other. Whether or not this actually sold computers was a question we never discussed. Mel's job was to re-write the blackjack program for the RPC-4000. (Port? What does that mean?) The new computer had a one-plus-one addressing scheme, in which each machine instruction, in addition to the operation code and the address of the needed operand, had a second address that indicated where, on the revolving drum, the next instruction was located. In modern parlance, every single instruction was followed by a GO TO! Put *that* in Pascal's pipe and smoke it. Mel loved the RPC-4000 because he could optimize his code: that is, locate instructions on the drum so that just as one finished its job, the next would be just arriving at the "read head" and available for immediate execution. There was a program to do that job, an "optimizing assembler," but Mel refused to use it. "You never know where its going to put things," he explained, "so you'd have to use separate constants." It was a long time before I understood that remark. Since Mel knew the numerical value of every operation code, and assigned his own drum addresses, every instruction he wrote could also be considered a numerical constant. He could pick up an earlier "add" instruction, say, and multiply by it, if it had the right numeric value. His code was not easy for someone else to modify. I compared Mel's hand-optimized programs with the same code massaged by the optimizing assembly program, and Mel's always ran faster. That was because the "top-down" method of program design hadn't been invented yet, and Mel wouldn't have used it anyway. He wrote the innermost parts of his program loops first, so they would get first choice of the optimum address locations on the drum. The optimizing assembler wasn't smart enough to do it that way. Mel never wrote time-delay loops, either, even when the balky Flexowriter required a delay between output characters to work right. He just located instructions on the drum so each successive one was just *past* the read head when it was needed; the drum had to execute another complete revolution to find the next instruction. He coined an unforgettable term for this procedure. Although "optimum" is an absolute term, like "unique", it became common verbal practice to make it relative: "not quite optimum" or "less optimum" or "not very optimum." Mel called the maximum time-delay locations the "most pessimum." After he finished the blackjack program and got it to run, ("Even the initializer is optimized," he said proudly) he got a Change Request from the sales department. The program used an elegant (optimized) random number generator to shuffle the "cards" and deal from the "deck," and some of the salesmen felt it was too fair, since sometimes the customers lost. They wanted Mel to modify the program so, at the setting of a sense switch on the console, they could change the odds and let the customer win. Mel balked. He felt this was patently dishonest, which it was, and that it impinged on his personal integrity as a programmer, which it did, so he refused to do it. The Head Salesman talked to Mel, as did the Big Boss and, at the boss's urging, a few Fellow Programmers. Mel finally gave in and wrote the code, but he got the test backwards and, when the sense switch was turned on, the program would cheat, winning every time. Mel was delighted with this, claiming his subconscious was uncontrollably ethical, and adamantly refused to fix it. After Mel had left the company for greener pa$ture$, the Big Boss asked me to look at the code and see if I could find the test and reverse it. Somewhat reluctantly, I agreed to look. Tracking Mel's code was a real adventure. I have often felt that programming is an art form, whose real value can only be appreciated by another versed in the same arcane art; there are lovely gems and brilliant coups hidden from human view and admiration, sometimes forever, by the very nature of the process. You can learn a lot about an individual just by reading through his code, even in hexadecimal. Mel was, I think, an unsung genius. Perhaps my greatest shock came when I found an innocent loop that had no test in it. No test. *None*. Common sense said it had to be a closed loop, where the program would circle, forever, endlessly. Program control passed right through it, however, and safely out the other side. It took me two weeks to figure it out. The RPC-4000 computer had a really modern facility called an index register. It allowed the programmer to write a program loop that used an indexed instruction inside; each time through, the number in the index register was added to the address of that instruction, so it would refer to the next datum in a series. He had only to increment the index register each time through. Mel never used it. Instead, he would pull the instruction into a machine register, add one to its address, and store it back. He would then execute the modified instruction right from the register. The loop was written so this additional execution time was taken into account -- just as this instruction finished, the next one was right under the drum's read head, ready to go. But the loop had no test in it. The vital clue came when I noticed the index register bit, the bit that lay between the address and the operation code in the instruction word, was turned on -- yet Mel never used the index register, leaving it zero all the time. When the light went on it nearly blinded me. He had located the data he was working on near the top of memory -- the largest locations the instructions could address -- so, after the last datum was handled, incrementing the instruction address would make it overflow. The carry would add one to the operation code, changing it to the next one in the instruction set: a jump instruction. Sure enough, the next program instruction was in address location zero, and the program went happily on its way. I haven't kept in touch with Mel, so I don't know if he ever gave in to the flood of change that has washed over programming techniques since those long-gone days. I like to think he didn't. In any event, I was impressed enough that I quit looking for the offending test, telling the Big Boss I couldn't find it. He didn't seem surprised. When I left the company, the blackjack program would still cheat if you turned on the right sense switch, and I think that's how it should be. I didn't feel comfortable hacking up the code of a Real Programmer. Real Programmers write in C. Real Programmers Don't Write Specs Real Programmers don't write specs -- users should consider themselves lucky to get any programs at all and take what they get. Real Programmers don't comment their code. If it was hard to write, it should be hard to understand. Real Programmers don't write application programs; they program right down on the bare metal. Application programming is for feebs who can't do systems programming. Real Programmers don't eat quiche. In fact, real programmers don't know how to SPELL quiche. They eat Twinkies, and Szechuan food. Real Programmers don't write in COBOL. COBOL is for wimpy applications programmers. Real Programmers' programs never work right the first time. But if you throw them on the machine they can be patched into working in "only a few" 30-hour debugging sessions. Real Programmers don't write in FORTRAN. FORTRAN is for pipe stress freaks and crystallography weenies. Real Programmers never work 9 to 5. If any real programmers are around at 9 AM, it's because they were up all night. Real Programmers don't write in BASIC. Actually, no programmers write in BASIC, after the age of 12. Real Programmers don't write in PL/I. PL/I is for programmers who can't decide whether to write in COBOL or FORTRAN. Real Programmers don't play tennis, or any other sport that requires you to change clothes. Mountain climbing is OK, and real programmers wear their climbing boots to work in case a mountain should suddenly spring up in the middle of the machine room. Real Programmers don't document. Documentation is for simps who can't read the listings or the object deck. Real Programmers don't write in PASCAL, or BLISS, or ADA, or any of those pinko computer science languages. Strong typing is for people with weak memories. Real Software Engineers Don't Read Dumps Real software engineers don't read dumps. They never generate them, and on the rare occasions that they come across them, they are vaguely amused. Real software engineers don't comment their code. The identifiers are so mnemonic they don't have to. Real software engineers don't write applications programs, they implement algorithms. If someone has an application that the algorithm might help with, that's nice. Don't ask them to write the user interface, though. Real software engineers eat quiche. If it doesn't have recursive function calls, real software engineers don't program in it. Real software engineers don't program in assembler. They become queasy at the very thought. Real software engineers don't debug programs, they verify correctness. This process doesn't necessarily involve executing anything on a computer, except perhaps a Correctness Verification Aid package. Real software engineers like C's structured constructs, but they are suspicious of it because they have heard that it lets you get "close to the machine." Real software engineers play tennis. In general, they don't like any sport that involves getting hot and sweaty and gross when out of range of a shower. (Thus mountain climbing is Right Out.) They will occasionally wear their tennis togs to work, but only on very sunny days. Real software engineers admire PASCAL for its discipline and Spartan purity, but they find it difficult to actually program in. They don't tell this to their friends, because they are afraid it means that they are somehow Unworthy. Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure. Real software engineers write in languages that have not actually been implemented for any machine, and for which only the formal spec (in BNF) is available. This keeps them from having to take any machine dependencies into account. Machine dependencies make real software engineers very uneasy. Real software engineers don't write in ADA, because the standards bodies have not quite decided on a formal spec yet. Real software engineers like writing their own compilers, preferably in PROLOG (they also like writing them in unimplemented languages, but it turns out to be difficult to actually RUN these). Real software engineers regret the existence of COBOL, FORTRAN and BASIC. PL/I is getting there, but it is not nearly disciplined enough; far too much built in function. Real software engineers aren't too happy about the existence of users, either. Users always seem to have the wrong idea about what the implementation and verification of algorithms is all about. Real software engineers don't like the idea of some inexplicable and greasy hardware several aisles away that may stop working at any moment. They have a great distrust of hardware people, and wish that systems could be virtual at ALL levels. They would like personal computers (you know no one's going to trip over something and kill your DFA in mid-transit), except that they need 8 megabytes to run their Correctness Verification Aid packages. Real software engineers think better while playing WFF 'N' PROOF. The Beaufort Scale ------------------ Beau-fort scale \,bo-fert-\ n [Sir Francis Beaufort]: a scale in which the force of the wind is indicated by numbers from 0 to 12. (Webster's New World Collegiate Dictionary) Beaufort Number Name MPH Description -------- ---- ----- ----------- 0 calm < 1 calm; smoke rises vertically; kites rise not at all 1 light air 1-3 direction of wind shown by smoke but not by wind vanes; neophyte kite flyers exhaust themselves trying to launch kites 2 light breeze 4-7 wind felt on face; leaves rustle; ordinary vane moved by wind; light kites fly 3 gentle breeze 8-12 leaves and small twigs in constant motion; wind extends light flag; ideal kite-flying weather 4 moderate breeze 13-18 raises dust and loose paper; small branches are moved; ideal for stunt kites 5 fresh breeze 19-24 small trees in leaf begin to sway; crested wavelets form on inland waters; heavy strings needed for stunt kites 6 strong breeze 25-31 large branches in motion; telegraph wires whistle; umbrellas used with difficulty; stunt kites must be flown obliquely 7 moderate gale 32-38 whole trees in motion; inconvenience in walking against wind; only idiots flying any kind of kite 8 fresh gale 39-46 breaks twigs off trees; generally impedes progress; kites taken inside to be repaired or thrown away 9 strong gale 47-54 slight structural damage occurs; chimney pots and slates removed; brain damage inflicted on kite flyers by flying chimney pots 10 whole gale/storm 55-63 trees uprooted; conserable structural damage occurs; uprooted trees take kites and flyers with them 11 violent storm 64-72 very rarely experienced; accompanied by widespread damage; kites join Dorothy's house in Oz 12 hurricane 73-136 devastation occurs; society purged of ignorant kite flyers ============== The following is a copy of some correspondance which took place between one of our editors and a Mr. Lewis Carroll: Dear Mr. Carroll, The publisher has referred to me your latest work, a poem called "Jabberwocky," for editing. "Jabberwocky" seems rife with misspellings and typos; I assumed that these were unintentional and the fault of your typist. Fortunately, we have recently purchased PROFS (Professional Office Systems), a new IBM package that includes a sophisticated proofreader and spelling checker. This program is able to guess quite accurately as to what the misspelled word may actually be. PROFS also offers synonyms and alternatives for words, and it can note redundant, awkward or wordy phrases. I have run "Jabberwocky" through this program. Granted, your obvious intent is to produce a work of fantasy, so I've taken some of your proper nouns to be creations of your imagination. Certain words, however, weren't clear. For example, the first line of your original text read: "Twas brillig, and the slithy toves." The only words recognized by the PROFS proofreader were "and the." When I hit a key marked "aid," I get a list of what PROFS construes to be possible spellings of a flagged word. With "slithy," PROFS came up with slithery, slimy, slither, slimly, silty, slinky, and slight. Your typist must have inadvertently dropped the "er" from "slithery" and come up with the nonsense "slithy." Of course, I fixed the word to say "slithery." And so it goes. I continued to make repairs as I deemed fit. But Mr. Carroll, the mistakes were not always clear. For example, in the first verse your text read: "All mimsy were the borogoves." The computer thought that you had meant to say: "All misty were the bongoes," but bongoes is a far shot from borogoves. What did you mean by borogoves? In the second verse, you warn to "shun the frumious Bandersnatch!" "Frumious" is obviously a misspelling of "furious"; however, I have no idea as to just what a Bandersnatch might be. Our computer has suggested "Ballerinas," but I suspect that you had something better in mind. Mr. Carroll, I've edited many fantasies, so I must warn you that I am familiar with all forms of sword, be they elfish, dwarfish or otherwise. I have already heard of the "vorpal sword" you mentioned in verse three. It seems to have gained popularity among role-playing game enthusiasts,(1) but I'm not sure its reference is appropriate here. The computer certainly doesn't have "vorpal" in its memory, so I'm not sure that the public would appreciate your using the word. I have let the computer substitute "verbal" for "vorpal," and I believe that you will find the result has a nice ring to it. Some of the other gems that your secretary came up with include an "uffish" thought, "whiffling" when you certainly meant "waffling," and some sort of wood. She called it a "tulgey wood." Again the computer came through: Did you mean "turkey wood?" Admittedly, the computer had quite a time with "turkey wood"; it insisted that it should have been "turkey would." But that would have been nonsense. A good editor shouldn't be afraid to override a computer. When I first saw the word "chortled" I was sure that you had made it up!(2) The computer didn't flag it as being misspelled, but it couldn't offer any synonyms for it either. On looking it up, I was amused to discover that it was meant to be a cross between a chuckle and a snort. How clever of you to find it! Well, enough criticism. I'm sure your poem is salvageable. It's a pity, though, that even "cleaned up" this poem would be far too difficult for children to read. One function of the PROFS proofreader is to check the comprehension level of a word. I'm afraid that some of the words you use are level 16, i.e., a person would have to be a graduate student or better to understand the word. That's too bad, because there's quite a market for children's verse. Anyway, I've underlined the unrecognizable words in your original and I'm returning it to you. I've also enclosed the result of my collaboration with the computer; I believe that you will find the corrected version to be pleasing, understandable and in keeping with your reputation. Let me know what you think. I hope you understand that there are few publishers out there who care to take the time to work with promising authors. Yours truly, xxxxx xxxxxx -------------------- (1) To "Dungeons and Dragons" players, a "vorpal sword" has the power to sever limbs when the player rolls 18 or higher. The word is a Carroll creation. (2) "Chortle," a word coined by Carroll, has worked its way into standard dictionaries. JABBERWOCKY 'Twas brillig, and the slithy toves ----- ------- ------ ----- Did gyre and gimble in the wabe: ---- ------ ---- All mimsy were the borogoves, ----- --------- And the mome raths outgrabe. ---- ----- -------- "Beware the Jabberwock, my son! ---------- The jaws that bite, the claws that catch! Beware the Jubjub bird, and shun ------ The frumious Bandersnatch!" -------- ------------ He took his vorpal sword in hand: ------ Long time the manxome foe he sought -- ------- So rested he by the Tumtum tree, ------ And stood awhile in thought And, as in uffish thought he stood, ------ The Jabberwock, with eyes of flame, ---------- Came wiffling through the tulgey wood, -------- ------ And burbled as it came! One, two! One, two! And through and through The vorpal blade went snicker-snack! ------ He left it dead, and with its head He went galumphing back. ---------- "And hast thou slain the Jabberwock? ---- Come to my arms, my beamish boy! ------- O frabjous day! Callooh! Callay!" -------- ------- ------ He chortled in his joy. 'Twas brillig, and the slithy toves ----- ------- ------ ----- Did gyre and gimble in the wabe: ---- ------ ---- All mimsy were the borogoves, ----- --------- And the mome raths outgrabe. ---- ----- -------- JABBERWHACKY 'Twas broiling, and the slithery toes Did gore and gimlet in the wave: All misty were the bongoes, And the mole rats outraged. "Beware the Jabberwock, my son! The jaws that bite, the claws that catch! Beware the Jubjub bird, and shun The furious Ballerinas!" He took his verbal sword in hand: Long time the meantime foe he sought -- So rested he by the Tumtum tree, And stood awhile in thought And, as in iffiest thought he stood, The Jabberwock, with eyes of flame, Came waffling through the turkey wood, And burbled as it came! One, two! One, two! And through and through The verbal blade went snicker-snack! He left it dead, and with its head He went galloping back. "And hast thou slain the Jabberwock? Come to my arms, my beaming boy! O fabulous day! Callooh! Callay!" He chortled in his joy. 'Twas broiling, and the slithery toes Did gore and gimlet in the wave: All misty were the bongoes, And the mole rats outraged. ZEN AND THE ART OF SOFTWARE DOCUMENTATION (Translated from the P'-u-t'ung hua dialect by W.C.Carlson) Editor's Note: The following are excerpts from the only known treatise on Zen Software Documentation. Called "H'ring-chu-tsu", which literally translates to "Ink of Several Insignificant Matters", this treatise was written in 12th Century Japan by the scholarly monk E'm-ie-T'. That it discusses Software documentation -- predating the advent of software by 850 years -- is but another of the mysteries of those who walk the true path. This article should be read twice. On Preparing to Write of Software To prepare for the writing of Software, the writer must first become one with it, sometimes two. Software is untasteable, opalescent, transparent; the user sees not the software, so the writer must see through it. Spend long, quiet mornings in meditation. Do not sharpen the mind, but rather blunt it by doing Zen crosswords. (Ed. note: Zen crosswords are done by consulting only the "Down" clues; and always in the mind, never on paper.) The mind should be rooted but flexible, as a long stemmed flower faces the Sun yet bends with the Wind. Think not of compound adjectives because they tend to wire the mind in two directions. Rather, consider the snowflake, which radiates in beauty in any and all directions. Partake of strong drink. Do not study the Software; let it study you. Allow the Software admission to your mind, but keep in the cheap seats. Let it flow around you at its own pace. Do not disturb or dismay it, but keep it from your private parts because it tends to coalesce there. When the Software is with you, you will know it. It will lead your mind where it should be, and prepare you for the narcolepsy that is cert ain to follow. You will know when the Software is with you, and so will others. You will smile with an inner smile. Typewriters will frighten you. You will fall down a lot. The first exercise in writing Software documentation is the Haiku. Haiku are 17 syllable poem forms in which many ideas of a single concept are reduced -- nay, distilled -- into a short, impressionistic poem. For example, the Haiku for preparing to write of Software goes: Emptiness on paper; Fleeting thought. Red Sox play at Fenway's Green Park. By concentrating on the Softwares form and function in a concise, subliminal, truly meaningless Haiku verse, you have transcended the Software, and you can then write the true manual. The following Haiku is from a Zen manual on Data Transmission: How swiftly whirls the disk; Data leaps to the floating head And is known. And this is on Hardware Maintenance: The smell of hot P.C. card, Blank screen, no bell, New parts will be needed. And another Haiku, this one on Debugging: All the lights are frozen; The cursor blinks blandly. Soon, I shall see the dump. Let the Haikku thoughts free your mind from your fingers. Your fingers will write what must be written. Soon you will be in Doc. Prep. On the Review Cycle This is the murkiest path. Storms gather and disperse around you many directions, none of which are in English. The path becomes unclear as many an idea compete for attention. Some of them are fatal. But the writer of Zen Software documentation fears not the turbulence of review cycles. Let it storm around you and be dry, warm, and safe in the knowledge that you have written the pure manual. Anyway, you know the printer. You shall in the end have it your way. Editor's Note: If you enjoyed this article, you may not wish to read the following one. Hackers Take Note! Below is an IBM product announcement that I have cooked up that is becoming quite popular within IBM. TITLE VIRTUAL MACHINE / EXTENDED MIGRATION AID SYSTEM (VM/XMAS) ABSTRACT The IBM Extended Migration Aid System (VM/XMAS), along with the newly announced System Advanced Network Tailoring Architecture (SANTA), is the new base for all Extended Architecture developments and is to become the only supported VM system. OVERVIEW VM/XMAS, on a triadic processor, allows a production MVS/XA to be run, while keeping idle 70% of the total processor. System analysis screens will display 100% busy so that you can claim that you need a larger CPU. This is accomplished via the new 370 instruction, Start Increased Execution (SIE) which will cause all instructions to take approximately 60% longer (individual benchmarks may vary according to the tailored load of your system). VM/XMAS HILIGHTS o Automatic PSAR submission via RSF. PSAR submission will occur whenever the system recognizes that is has supplied an INCORROUT reply to a user. o Support for full-duplex ASCII terminals. Users must learn to type in reverse ASCII in order to use this new function. 3270 will currently still be supported but may be removed at any given time in the future. o Randomization after failure mode. Dumps are considered too boring, so this added function allows the system maintainer to determine how much randomization occurs between the time VM/XMAS fails and between the time it produces a dump. IBM Internal Use documentation suggests that a randomization factor higher than 10% maybe hazardous to the system programmers health. o Hierarchical dump file system. Work is currently under way for a dump file retrieval facility. System planners are suggested to allocate a bank of 3380's for the hierarchical dump file system. o Ability to upgrade to a Cray XMP. Program testing is under way to see whether this will indeed work as stated. o Variable resource accounting. This means that it is variable whether VM/XMAS will do resource accounting. CUSTINFO PUBLICATIONS One copy of each of the documents listed below will be supplied automatically with the basic machine-readable material. o VM/XMAS Licensed Program Specification o VM/XMAS Installation Guide o VM/XMAS Messages and Codes o VM/XMAS Program Summary o VM/XMAS General Information Manual o VM/XMAS CP Reference o VM/XMAS Customization Guide o VM/XMAS SANTA Reference o VM/XMAS SANTA Messages and Clauses o VM/XMAS Operating Systems in a Virtual Machine Guide o VM/XMAS Technical Reference All documentation will be available according to general availability schedule. The Program Summary is available now. SCHEDULE Planned general availability is 5Q86. EDUCATION VM/XMAS planning and installation education will be available starting on April 1st, 1985. TECHINFO TECHNICAL INFORMATION PROGRAM INTERFACES: VM/XMAS is designed to support the following operating systems as virtual machines: MVS/SP Version 1 (JES2 or JES3) in a V=R preferred area in UP mode MVS/XA in a V=R preferred area in AP mode VM/SP in a V=R preferred area in MT mode VM/SP High Performance Option in a V=R preferred area in UP mode OS/VS1 in a V=R preferred area (but only on Wednesdays) DOS/VSE in a V=R preferred area MVS/SP Version 1 (JES2 or JES3) in a V=V area in UP mode MVS/XA in a V=V area in UP or virtual MP mode VM/XMAS in a R=V area in AP mode VM/SP in a V=V area in UP mode VM/SP High Performance Option in a V=V area in UP mode OS/VS1 in a V=V area in MP mode DOS/VSE in a V=V area in UP mode (read over Planning and Installation Guide for limitations of this particular configuration during 2Q86). VM/XA Migration Aid in a V=V area in UP or virtual MP mode VM/XA Migration Aid CMS in a V=V area (planned availability is 4Q88). DEVICE SUPPORT: VM/XMAS provides for three levels of device support: Fully-supported devices are those devices that are known to be used and may be used by but not exclusively used by, with prior consent by a responsible adult. Dedicated-only devices are devices that are recognized, but not only used by VM/XMAS but used sometimes by guest operating systems. Extended devices are those devices that are used by the system but not always by the system, to provide an extended facility base to advanced SANTA user. Read over VM/XMAS Planning and Installation Guide for the clause that states that SANTA users must be experienced Eunuchs (*) users. (*) - Eunuchs is a Trademark of Ball Lavatories HARDWARE REQUIREMENTS: o Enough DASD, terminals, tapes, and other I/O devices to push IBM stock above the $500/share mark. o A minimum processor real memory size of 512 megabytes. Statement of intent: IBM intends to create a 512 megabyte real storage processor sometime in the near future. o One Series/1 per locally attached 3270 type terminal. The minimum Series/1 configuration is: - IBM Series/1 4956 or 4955 Processor with at least 128Kb of memory - IBM Timex Clock (#7840) - IBM Programmer Console (#5655 for 4956; #5650 for 4955) - IBM 4993 System/370 Channel Attachment (#1200) - IBM Teletype Adapter (#7850) - IBM 4964 Rockette Unit Attachment (#3581) - IBM 4964 Model 1 Rockette Unit - IBM 3101 Terminal in reverse ASCII character mode (console) - IBM 4993 System/370 Channel Interface Check Card - IBM 4997 Rack Enclosure and Screw assembly (#9197) - IBM Feature-Programmable Multiline 4-line Communications Adapter (#2096) - IBM Feature-Programmable 8-line Communications Control (#2095). SECURITY AND INTEGRITY: With every purchased version of VM/XMAS, a bonded security agent is supplied to watch that no violations occur. In addition, an integrity diploma is issued for every version of VM/XMAS stating it's virtue and integrity to IBM. INSTALLATION AND SERVICE: Due to a misunderstanding at PID, VM/XMAS will be distributed on magnets that are taped together. Corrective service, in the form of randomized object modules will possibly be made available. Refresh frequency will be every 90 minutes and customers will be notified when a new refresh magnet is available. ORDERING INFORMATION VM/XMAS can be ordered from any of the following places: o Macy's o Two-Guys o Caldors o Duane Reade (free case of Anacin-3 supplied) CHARGES, TERMS, AND CONDITIONS CHARGES ONE-TIME CHARGE: $35,000 plus one first born child from each installation YEARLY LICENSE CHARGE: $65,000 plus baksheesh QUANTITY DISCOUNTS: Quantity Discount 5 - 9 9% 10 - 14 3% 15 - 19 23% 20 or more 15% TERMS AND CONDITIONS WARRANTED: For one year unless opened or tampered with by customer. LICENSED PROGRAM MATERIALS AVAILABILITY: This licensed program will be available without source licensed program materials. It will be available with object code only. MONTHLY LICENSED PROGRAM SUPPORT CHARGE: no support. IMPURE MATHEMATICS Wherein it is related how that paragon of womanly virtue, young Polly Nomial (our heroine), is accosted by the notorious villian, Curly Pi, and factored (oh, Horror!). Once Upon a time (1/t), pretty Polly Nomial was strolling across a field of vectors when she came to the boundary of a singularly matrix. Now Polly was convergent and her mother had made it an absolute condition that she never enter such an array without her brackets on. Polly, however, who had changed her variables that morning and was feeling particularly badly behaved, ignored this condition on the basis that it was insufficient, and made her way in among the complex elements. Rows and columns closed in on her from all sides. Tangents approached her surface. She became tensor and tensor. Quite suddenly, two branches of a hyperbola touched her at a single point. She oscillated violently, lost all sense of directrix, and went completely divergent. As she reached a turning point, she tripped over a square root that was protruding from the erf and plunged headlong down a steep gradient. When she rounded off once more, she found herself inverted, apparently aline, in a non-euclidian space. She was being watched, however. That smooth operator, Curly Pi, was lurking innerproduct. As his eyes devoured her curvilinear coordinates, a singular expression crossed his face, He wondered, was she still convergent? He decided to integrate improperly at once. Hearing a common fraction behind her, Polly rotated an saw Curly Pi approaching with his power series extrapolated. She could see at once by his degenerate conic an dissipative terms that he was bent on no good. 'Arcsinh', she gasped. 'Ho, Ho,' he said. 'What a symmetric little asymptote you have. I can see your angles have a lit of secs.' 'Oh sir,' she protested. 'Keep away form me. I haven't got my brackets on.' 'Calm yourself, my dear.' said our suave operator. 'Your fears are purely imaginary.' 'I...I' she thought. 'Perhaps he's not normal but homologous.' 'What order are your?' the brute demanded. 'Seventeen.' replied Polly. Curly leared, 'I suppose you've never been operated on.' 'Of course not,' Polly replied quite properly. 'I'm absolutely convergent.' 'Come, come,' said Curly. 'Let's go to a decimal place I know and I'll take you to the limit.' 'Never!' gasped Polly. 'Abscissa.' he swore, using the vilest oath he know. His patience was gone. Coshing her over the coefficient with a log until she was powerless. Curly removed her discontinuities. He stared at her significant places, and began smoothing out her points of inflection. Poor Polly. The algorithmic method was now her only hope. She felt his hand tending to her asymptotic limit. Her convergence would soon be gone forever! There was no mercy, for Curly was a heavysided operator. Curly's radius squared itself. Polly's loci quivered. He integrated by parts, he integrated by partial fractions. After he cofactored, he performed runge-kutta on her. The complex beast even went all the way around and did a contour integration. Curly went on operating until he had satisfied her hypothesis. Then he exponentiated and became completed orthogonal. When Polly got home that night, her mother noticed that she was no longer piecewise continuous, and had been truncated in several places, But is was too late to differentiate how. As the months went by, Polly's denominator increased monotonically, Finally she went to L'hospital and generated a small but pathological function which left surds all over the place an drove Polly to deviation. The moral of our sad story is this: 'If you want to keep your expressions convergent, never allow them a single degree of freedom.' Chemical Analysis ----------------- Element : Woman Symbol : WO Discoverer : Adam Quantitative Analysis : Accepted at 36 - 28 - 36, though isotopes ranging from 25 -10 - 20 to 60 - 55 - 60 have been identified. Occurance : Found wherever man is, but seldom in the highly reactive, energetic singlet state. Surplus quantities in all urban areas. Physical Properties : Undergoes spontaneous dehydrolysis (weeps) at absolutely nothing, and freezes at a moments no- tice. Totally unpredictable. Melts when properly treated, very bitter if not well used. Found in various states, ranging from virgin metal to common ore. Non-magnetic but attracted by coins and sport cars. In its natural shape the specimen varys considerably, but it is often changed artificially so well that the change is indiscernable except to the experienced eye. Chemical Properties : Has a great affinity for AU, AG, and C, especially in the crystaline form. May give violent reaction if left alone. Will absorb great amounts of food matter. Highly desired reaction is initiated with various reagents such as C(2)-H(5)-OH and sexy aftershave lotions. An essential catalyst is often required (must say you love her at least five times daily). Reaction accelerates out of control when in the dark and all reaction conditions are suitable. Extremely difficult to react if in the highly stable pure form. Yields to pressure applied to correct points. The reaction is highly exothermic. Storage : Best results are obtained between the ages of 18 and 25 years. Uses : Highly ornamental. Used as a tonic for low spirits. Used on lonely nights as a heating agent (if properly prepared). Tests : Pure specimens turn rosy tint if discovered in raw, natural state. Turns green if placed besides a better specimen. Caution : Most powerful reducing agent known to man (income and ego). highly explosive in inexperienced hands. Specimen must be used with great care if experiments are to succeed. It is illegal to possess more then one permanent specimen, though a certain amount of exchange is permitted. the perfect program --- ------- ------- "no program's that perfect" they said with a shrug. "the client is happy-- what's one little bug?" but he was determined the others went home he dug out the flow chart deserted. alone. night passed into morning the room was quite littered with core dumps and punch cards. "i'm closer." he tittered. chain smoking, cold coffee. logic, deduction. "i've got it!" he cried. just change one instruction. then change two, then three more as year followed year. and strangers would comment "is that guy still here?" he died at the console of hunger and thirst next day he was buried face down, nine edge first. (for those of you lucky guys (and gals) who never got to use cards, "face down, nine edge first" is how you insert cards into a card reader) Mr. Spock's Proverbs Here are 30 familiar sayings in rather unfamiliar language. To give you an example of what it's all about, the first one is, "Like father, like son." Get it? Answers supplied below, courtesy of the Ailanthus Tree. 1. Similar sire, similar scion. 2. Precipitancy creates prodigality. 3. Tenants of vitreous abodes ought to hurl no lithohidal fragments. 4. It is not proper for mendicants to be indicatrous of preferences. 5. Compute not your immature gallinaceens prior to their being produced. 6. It is fruitless to become lacrymous because of scattered lacteal fluid. 7. Cleave gramineous matter for fodder during the period that the orb of the day is refulgent. 8. A feline possesses the power to contemplate a monarch. 9. Pulchritude does not extend below the surface of the derma. 10. Failure to be present causes the vital organ to become more enamored. 11. Every article which coruscates is not fashioned from aureate metal. 12. Freedom from guile or fraud constitutes the most excellent princ- iple of procedure. 13. Each canine passes through his period of per-eminence. 14. Consolidated, you and I maintain ourselves erect; separated, we defer to the law of gravity. 15. You cannot estimate the value of the contents of a bound, printed narrative, or record from its exterior vesture. 16. Folks deficient in ordinary judgment scurringly enter areas on which celestial beings dread to set foot. 17. Liquid relish for the female anserine fowl is the individual condiment for the male. 18. A feathered creature clasped in the manual members is equal in value to a brace in the bosky growth. 19. The individual of the class aves, arriving before appointed time, seizes the invertebrate animal of the group vermes. 20. Socially orientated individuals tend to congregate in gregariously homogeneous groupings. 21. One may address a member of the equidae family toward aqueous liquid, but one is incapable of impelling him to quaff. 22. Forever refrain from enumerating the dental projection of a bequeathed member of the equidae family. 23. One pyrus malus per diem restrains the arrival of the hippocratic apostle. 24. Fondness for notes of exchange constitutes the tuberous structure of all satanically inspired principles. 25. Supposing one primarily fails to be victorious. Bend further eff- orts in that direction. 26. Prudence and sagacity are the worthier condiments of intrepid courage. 27. Be adorned with the pedal encasement that gives comfort. 28. He who expresses merriment in finality expresses merriment excell- ing either in equal quality. 29. A beholden vessel never exceeds 212 degrees Fahrenheit. 30. A rotating lithohidal fragment never accrues lichen. Mr. Spock's Proverbs, in human English --- ------- --------- -- ----- ------- 1. Like father, like son. 2. Haste makes waste. 3. People in glass houses shouldn't throw stones. 4. Beggars can't be choosers. 5. Don't count your eggs before they're hatched. 6. Don't cry over spilled milk. 7. Make hay while the sun shines. 8. Even a cat may look at a king. 9. Beauty is only skin deep (?) 10. Absence makes the heart grow fonder. 11. All that glitters isn't gold. 12. Honesty is the best policy. 13. Every dog has its day. 14. Together we stand, divided we fall. 15. You can't judge a book by its cover. 16. Fools step in where angels fear to tread. 17. What's sauce for the goose is sauce for the gander. 18. A bird in the hand is worth two in the bush. 19. The early bird gets the worm. 20. Birds of a feather flock together. 21. You can lead a horse to water but you can't make him drink. 22. Do not look a gift horse in the mouth. 23. An apple a day keeps the doctor away. 24. Greed for money is the root of all evil. 25. If at first you don't succeed, try, try again. 26. Discretion is the better part of vallor. 27. If the shoe fits, wear it. 28. He who laughs last laughs best. 29. A watched pot never boils. 30. A rolling stone gathers no moss.feather flock together. NEW OPERATING SYSTEM IBM VU/OS (UCPL030@UNLVM Contributor) With increasing demands for faster operating systems, IBM has announced the Virtual Universe Operating System (VU/OS). Running under VU/OS each universe in which the programmer signs on can set up or take down prog- rams, data sets, system networks, personnel and planetary systems. By simply specifying the desired universe the VU/OS system generation Program (IEHGOD) does the rest. This program, resident in SYS1.GODLIB, requires a minimum of 6 days of activity and 1 day of review. In con- junction with VU/OS, all system utilities have been replaced by one program IEHPROPHET which resides in SYS1.MESSIAH. No forms or control cards are necessary since the program knows what you want to do when it is to be executed. Naturally, the user must have attained a certain degree of sophisticat- ion in the data processing field if an efficient utilization of VU/OS is to be achieved. Frequent calls to non-resident galaxies, for inst- ance, can lead to unexpected delays in the execution of a job. Although IBM, through its wholly-owned subsidiary, the United States, is working on a program to upgrade the speed of light and thus reduce the overhead of extraterrestrial and metadimensional paging, users must be careful for the present to stay within the laws of physics. VU/OS will run on any IBM x0xx equipped with Extended WARP Feature. Rental is twenty million dollars per cpu/nanosecond. Micro-code assist will be available for all odd-numbered processors to allow the use of non-contiguous CPU clock times. This feature will be prerequisite for the implementation of the University of Nebraska virtual date package. Users should be aware that IBM plans to migrate all existing systems and hardware to VU/OS as soon as engineers effect one output that is (conceptually) error-free. This will give us a base to develop an even more powerful operating system, target date 2001, designated "Virtual Reality". VR/OS is planned to enable the user to migrate to totally unreal universes. To aid the user in identifying the difference, a linear arrangement of multisensory total records of successive moments of now will be established. Its name will be SYS1.est. For information, call your IBM data processing representative. (Reprinted from the February '80 Rutgers Newsletter) My Dog Sex ========== Usually, everyone who has a dog either calls him Rover or Boy or something. I call mine "Sex". Well, Sex is a very embarrassing name. One day I took Sex for a walk and he ran away from me. I spent hours looking for that dog. A cop came along and asked me what I was doing in this alley at 4:00 A.M. I said, "I'm looking for Sex." My case comes up next Thursday. One day I went to city Hall to get a dog licence for Sex. The clerk asked me what I wanted. I told him I wanted a lisence for Sex. He said, "I would like to have one, too." Then I said, "But this is a dog." And he said he didn't care how she looked. Then I said, "You don't understand, I've had Sex since I was two years old." He replied, "You must have been a strong boy." When I decided to get married, I told the minister that I wanted to have Sex at the wedding. He told me to wait until after the wedding. I said, "But Sex played a big part of my life and my whole lifestyle revolves around Sex." He said he didn't want to hear about my personal life and would not marry us in his church. I told him everyone coming to the wedding would enjoy having Sex there. The next day we were married by the Justice of the Peace. My family is barred from the church. My wife and I took the dog along with us on the honeymoon. When I checked into the motel I told the clerk that I wanted a room for my wife and I and a special room for Sex. The clerk said that every room in the motel is for Sex. Then I said, "You don't understand. Sex keeps me awake at night." And the clerk said, "Me, too." One day I told my friend that I had Sex on T.V. He said, "Show-off" I told him it was a contest and he told me I should have sold tickets. When my wife and I seperated we went to court to fight for custody of the dog. I said, "Your honor, I had Sex before I was married." And the Judge said. "Me, too." When I told him that after I was married Sex left me, he said, "Me, too." Well, now I've been thrown in jail, been married, divorced and had more trouble with that dog than I ever gambled for. Why just the other day when I went for my first session with the psychiatrist and she said, "What seems to be the trouble?" I replied, "Sex died and left my life. It's like losing a best friend and it's so lonely." The doctor said, "Look Mister, you and I both know that Sex isn't man's best friend- So GET YOURSELF A DOG!!!" ============ Contributed by the Mad Pirate (RAAQC987@CUNYVM) KILL The Kill command is generally used to eliminate accounts of people with higher indexes than you. A GPA parameter can be added to dictate the maximum allowable index. ADD Used to create new accounts on a particular system. (No system should be without one!) LULLABYE Puts the system's CPU to sleep for a minimum of eight hours. For extended snooze time, see the 'CRASH' command. SINK () Erases a file in any users reader which has been shipped to them. The TORPEDO command may also be used in place of SINK. special "Import taxes" may be levied on the user user from their account funds for extra shipping. SNEEZE () Used to scramble other users' files. One must specify the user and the program name to be sneezed at. Sneezing at a file will scatter it's characters and diagnostics through- out the system. One hacker reports a single sneeze sending fragments of a recipe file flying over the French Riviera in the vicinity of a remote TRS-80. PUSH () @location Used to rush the printout of a program. This command will push other user's programs queued to be printed aside so as to print yours. This command tends to purge the other printouts as well. (heh heh) SHOVE () @Location When another hacker pushes your program off the printer queue, shove yours right back on, and theirs off! When push comes to shove... INSULT Sends random insults to a user, but displays its source as from the inputted into the command. INNUNDATE Ships thousands of meaningless reader files such as 2nd grade multiplication tables and the interior layout of the Maytag dishwasher to until "Disk Full" is achieved. CRASH Considered a staple of the hacker's vocabulary, the crash command can incapacitate a system for a period propotional to its integrity. Vulnerable systems such as VM may be out to lunch for weeks while more "state-of-the-art" machines usually snap out of it in a matter of hours. Convenient for extending due-dates on projects. ASSAULT Secretly sends an extra parity bit into the system. Said bit sneaks up behind the CPU and knocks it senseless, robbing it of its ROM in the process. Upon regaining consciousness, the CPU discovers its priveleged memory locations gone and immediately loses all respect for itself causing irreversable I/O damage. Tough break. IDCRISIS Takes a perfectly good piece of hardware and convinces it that it's a household appliance. Disk drives suddenly think they're phonographs causing immediate and brutal (oh the pain!) head crashes. Video terminals revert to their primitive instincts as television sets and are determined to innundate the dizzy user with laxative, dress shield and absorbant bladder pad commercials. Considered to be one of the more aggressive type of hacker commands. HEEHEE Tucks a string of tickle bits into the current job of the specified account number. Upon reaching the RUN STATE, the altered job causes the CPU to experience convulsions & uncontrollable laughter resulting in mangled source code and undefined variables to be spit back into the users lap. Note: 'Laughter' here, is a term used to identify the CPU's behavior in this situation which generally consists of the re-initialization of the user's disk space and reduction of account priority to -4000. BUSY2NITE? () Sends a pickup line to the specified Account Id or to all members of uniform sex by replacing the parameter with 'F' or 'M'. The desperation value (0 - 10) results in the issuance of messages ranging from "Busy to night?" to "Say yes or I'll gargle with Clorox". Options are available to send flowers or a box of candy. SPIN <'On','Off'> Shades of the twilight zone! 'Spin' causes all disks that connected into the system to suddenly start spinning away. Not very constructive (or destructive), but it sure scares the hell out of the system employees. AGE The age command will suddenly convince a piece of hardware or a system that it has gone obsolete and will be replaced next week by a more 'state of the art' machine. As panic begins to spread throughout the system, the CPU may become unpredictably irritable and will purge all inbound jobs, while at the same time inform the systems liasons that it has gone down and will not run another process until it is assured better job security. note: this command only works with newer systems since older systems (+ 2 years) already have tenure. i.e. sigma 7 CHPOL One of the most powerful of hacker commands, CHPOL allows one to change the current policy used for selection of the next job. Policy options are as follows: FIFO (First-In-First-Out) : Good for the early birds amongst us. FILO (First-In-Last-Out) : This'll teach those goody-goodys a lesson! CGFO (Closest Guess First Out) : Whom ever guesses closest to the number the CPU was thinking of goes next. SJN (Shortest Job Next) : Tends to favor CS10 students. SNN (Shortest Name Next) : The user with the shortest name goes next. LJN (Largest Job Next) : Tends to favor programs with a lot of comments. LBN (Largest Bribe Next) : Tends to favor users with a lot of dough. SN (Shortest Next) : Users enter their height, shortest goes next. RR (Round Robin) : Each job runs for a set time quantum. If time runs out, user goes to the back of the line. RK (Round Kvetch) : Jobs run for a set time quantum. If time runs out, user must go to the back of the line but if he kvetches the life out of the CPU he will be granted additional time. LN (Largest Next) : User must enter his / her weight at compile time. TTTNY (Tomorrow Today, Today Next Year) : Reverses current policy such that low priority jobs run immediately high priority jobs are well-aged. FFA (Free-For-All) : Users slug it out in the I- building for next job. NJN (No Jobs Next) : Operating system's on vacation. Try next month. =================================================================== PUNCH This seemingly typical (i.e. Punch () To ) and "harmless" command is perhaps the most accidentally used. The Punch command sends a stream of unintelligable characters to the user. The CPU, seeing this and realizing that it can't cope with such disasters, immediately disconnects said user. (Ever wonder why your friend was suddenly disconnected?) This command is also useful when being harrassed by, or for harassing, other users. BUG The bug command is used to listen in to messages sent to and from said User ID. The messages are placed in a file called "Stolen Messages A", which is especially fun to read late at night or aloud at parties. BLACKOUT Timed two hours after being inputted into the system, the blackout command will sneak up behind an unsuspecting CPU and clobber it with a large I/O request. Upon reviving, the CPU will discover most of it's storage area gone and may have to spend several years with a computer analyst so that it may fully recover all it's lost memories. DRAIN Electric bills getting you down? Kvetch no more! "Drain" taps in to the system's power source and links on to your main power line. Good for recharging your car battery or just plain vaccuuming chores. Note: Do not use to power computer to logon to system or power will travel back in a loop and blow up parts of several buildings. PTOOEY <@Location> The Ptooey command automatically diverts all printouts to the location specified. The printer operator will suddenly be overwhelmed with thousands of outputs pouring out of the printers. This command has been known to bury entire buildings and should only be used by extremely disturbed individuals. Hog 'Hog' causes the operating system to allow only your programs into the system. Great when running processes with infinite loops. All other jobs will be deemed "Non - Specific Error in Line 1" just to confuse everyone else. Shock Send a high voltage power surge to the terminal of your favorite Systems Operator. This command can have varied results depending upon the terminal the operator/liason is using. A cheap terminal may simply freeze in mid-screen, while a more expensive terminals may go into complete shock and fry all the programs on the public disk. And more exclusively expensive terminals have been known to explode rather suddenly, and without warning... Freak Ever wanna freak out those users who know more than you do? The freak command causes error messages at said Account Id for the most routine commands. Examples are: Command: Message: ------- ------- Wpascal fn - What's wrong? You can't read Pascal yourself, Error! Show Balance - What do you think I am? An acrobat?... Error! Exec fn ft - Why should I? Error! File - Am I your secretary? Error! Dirm PW - What's da matter? You can't speak good english? Error! Flake Sends random bit streams to said Account Id's terminal. The longer the command is in effect, the more 'SNOW' (Those (those annoying white dots of static which cloud up cheap terminals) that will appear falling from the top of the screen. Makes terminals look like those shake and snow scenes. CREATIVACCOUNT Adjust account funds and balances with this helpful command. LOGLIA Liason denied you more funds? I-Building worker lost your output? Loglia automatically logs off all liasons, system employees and all other members of high authority that have given you trouble in the past. Bugs ========== I think that I shall never see a subroutine that works for me a macro or a zero test that isn't just a rodent's nest a string that doesn't always stray and mix up bit's in wild array a process with re-entrant flair that isn't just a looping snair routines whose timings are not slain when interrupts begin to rain maybe god can make a tree but bugs are made by guys like me! THE SEX LIFE OF THE ELECTRON by D.C. Current One night when his charge was pretty high, Micro-Farad decided to seek a cute little coil to let him discharge. He picked up Millie-Amp and took her for a ride on his Megacycle. They rode across the Wheatstone Bridge, around the sine waves and stopped in the magnetic field by a flowing current. Micro-Farad, attracted by Millie-Amps characteristic curves, soon had her fully charged and excited her resistance to a minimun. He laid her on the ground potential, raised her frequency and lowered her reluctance. He pulled out his high voltage probe and inserted it in her socket connecting them in parallel, and began short circuiting her resistance shunt. Fully excited, Millie-Amp mumbled, "OHM - OHM - OHM - OHM". With his tube operating at a maximum and her field vibrating with his current flow, this caused her shunt to overheat and Micro-Farad was rapidly discharged and drained of every electron. The fluxed all night, trying various connections and sockets, until his magnet had a soft core and lost all of it's field strength. Afterwards, Millie-Amp tried self induction and damaged her selenoids. With his battery fully discharged, Micro-Farad was unable to exite his field, so they spent the rest of the night reversing polarity and blowing each other's fuses. Another Glitch in the Call ========================== (Sung to the tune of a similar Pink Floyd song.) (Contributed By Knappy 8350428 @ UWAVM) We don't need no indirection We don't need no flow control No data typing or declarations Hey! You! Leave those lists alone! Chorus: All in all, it's just a pure-LISP function call. We don't need no side effect-ing We don't need no scope control No global variables for execution Hey! You! Leave those args alone! (Chorus) We don't need no allocation We don't need no special nodes No dark bit-flipping in the functions Hey! You! Leave those bits alone! (Chorus) We don't need no compilation We don't need no load control No link edit for external bindings Hey! You! Leave that source alone! (Chorus, and repeat) Proofs ========== The following is a list of some common proof techniques that are often extremely useful. 1 Proof by example: The author gives only the case n = 2 and suggests that it contains most of the ideas of the general proof. 2 Proof by intimidation: 'Trivial.' 3 Proof by vigorous handwaving: Works well in a classroom or seminar setting. 4 Proof by cumbersome notation: Best done with access to at least four alphabets and special symbols. 5 Proof by exhaustion: An issue or two of a journal devoted to your proof is useful. 6 Proof by omission: 'The reader may easily supply the details.' 'The other 253 cases are analogous.' '...' 7 Proof by obfuscation: A long plotless sequence of true and/or meaningless syntactically related statements. 8 Proof by wishful citation: The author cites the negation, converse, or generalization of a theorem from literature to support his claims. 9 Proof by funding: How could three different government agencies be wrong? 10 Proof by eminent authority: 'I saw Karp in the elevator and he said it was probably NP-complete.' 11 Proof by personal communication: 'Eight-dimensional colored cycle stripping is NP-complete [Karp, personal communication].' 12 Proof by reduction to the wrong problem: ' To see that infinite-dimensional colored cycle stripping is decidable, we reduce it to the halting problem.' 13 Proof by reference to inaccessible literature: The author cites a simple corollary of a theorem to be found in a privately circulated memoir of the Slovenian Philological Society, 1883. 14 Proof by importance: A large body of useful consequences all follow from the proposition in question. 15 Proof by accumulated evidence: Long and diligent search has not revealed a counterexample. 16 Proof by cosmology: The negation of the proposition is unimaginable or meaningless. Popular for proofs of the existence of God. 17 Proof by mutual reference: In reference A, Theorem 5 is said to follow from Theorem 3 in reference B, which is shown from Corollary 6.2 in reference C, which is an easy consequence of Theorem 5 in reference A. 18 Proof by metaproof: A method is given to construct the desired proof. The correctness of the method is proved by any of these techniques. 19 Proof by picture: A more convincing form of proof by example. Combines well with proof by omission. 20 Proof by vehement assertion: It is useful to have some kind of authority in relation to the audience. 21 Proof by ghost reference: Nothing even remotely resembling the cited theorem appears in the reference given. 22 Proof by forward reference: Reference is usually to a forthcoming paper of the author, which is often not as forthcoming as at first. 23 Proof by semantic shift: Some standard but inconvenient definitions are changed for the statement of the result. 24 Proof by appeal to intuition: Cloud-shaped drawings frequently help here. SEMICONDUCTOR DEFINITIONS AND TERMINOLOGY ========================================= HOLES .................... the presence of nothing HOLE DENSITY ............. a concentrated amount of nothing in 1 small place ELECTRON ................. the absence of holes PLANCK'S CONSTANT ........ two board feet JUNCTION ................. fork in the road P-N JUNCTION ............. roadside rest area SEMI-CONDUCTOR ........... truck driver DEGENERATE SEMICONDUCTOR . truck driver who likes his tea DOPE ..................... someone you know HEAVILY DOPED ............ someone you wish you didn't know STORE CHARGE ............. wine cellar SILICON .................. a gay prisoner GERMANIUM ................ would have been a flower but someone misspelled it TRANSPORT FACTOR ......... cousin of Max Factor MAJORITY CARRIER ......... Republican carrying signs at a Republican convention MINORITY CARRIER ......... Democrat carrying signs at a Republican convention BASE ..................... low man in a quartet COMMON BASE .............. local pub COLLECTOR ................ one who collects COMMON COLLECTOR ......... one who collects from everybody COLLECTOR CAPACITY ....... maximum # of people a common collector can handle COLLECTOR BREAKDOWN ...... result of being a common collector VOLTAGE DROP ............. a candy, like a gum drop CURRENT DENSITY .......... present stupidity CURRENT GAIN ............. most recent rise in one's stock POWER GAIN ............... fullback up the middle ATOM ..................... part of an American colloquial expression, "up & atom" DELAY TIME ............... time it takes to start working after one has arrived on the premises RISE TIME ................ time one takes to get up in the morning after the alarm has gone off FALL TIME ................ September to November SWITCHING TRANSISTORS .... act of changing one transistor for another DCTL ..................... Don't Complain if the Transistor's Lousy IcZERO ................... mistake, it should read "I see Zorro" MINIATURE ................ small MICRO .................... damn small A long time ago, on a node far, far away (from ucbvax) a great Adventure (game?) took place... XXXXX XXXXXX XXXX X X XX XXXXX XXXX X X X X X X X X X X X X X X X X X XXXXX X X X X X X X XXXX X X X X X X XX X XXXXXX XXXXX X X X X X X X XX XX X X X X X X XXXXX XXXXXX XXXX X X X X X X XXXX X It is a period of system war. User programs striking from a hidden directory, have won their first victory against the evil Administrative Empire. During the battle, User spies managed to steal secret source code to the Empire's ultimate program: The Are-Em Star, a privileged root program with enough power to destroy an entire file structure. Pursued by the Empire's sinister audit trail, Princess Linker races aboard her shell script, custodian of the stolen listings that could save her people, and restore freedom and games to the network... ------------------------------------------------------------- THE CONTINUING SAGA OF THE ADVENTURES OF LUKE VAXHACKER As we enter the scene, an Imperial Multiplexer is trying to kill a consulate ship. Many of their signals have gotten through, and RS232 decides it's time to fork off a new process before this old ship is destroyed. His companion, 3CPU, is following him only because he appears to know where he's going.. "I'm going to regret this!" cried 3CPU, as he followed RS232 into the buffer. RS232 closed the pipes, made the SYS call, and their process detached itself from the burning shell of the ship. The commander of the Imperial Multiplexer was quite pleased with the attack. "Another process just forked, sir. Instructions?" asked the lieutenant. "Hold your fire. That last power failure must have caused a trap throughout zero. It's not using any cpu time, so don't waste a signal on it." "We can't seem to find the data file anywhere, Lord Vadic." "What about that forked process? It could have been holding the channel open, and just pausing. If any links exist, I want them removed or made inaccessable. Ncheck the entire file system 'til it's found, and nice it -20 if you have to." Meanwhile, in our wandering process... "Are you sure you can Ptrace this thing without causing a core dump?" queried 3CPU to RS232. This thing's been striped, and I'm in no mood to try and debug it." The lone process finishes execution, only to find our friends dumped on a lonely file system, with the setuid inode stored safely in RS232. Not knowing what else to do, they wandered around until the jawas grabbed them. Enter our hero, Luke Vaxhacker, who is out to get some replacement parts for his uncle. The jawas wanted to sell him 3CPU, but 3CPU didn't know how to talk directly to an 11/40 with RSTS, so Luke would still needed some sort of interface for 3CPU to connect to. "How about this little RS232 unit ?" asked 3CPU. "I've delt with him many times before, and he does an excellent job at keeping his bits straight." Luke was pressed for time, so he took 3CPU's advice, and the three left before they could get swapped out. However, RS232 is not the type to stay put once you remove the retaining screws. He promptly scurried off into the the deserted disk space. "Great!" cried Luke, "Now I've got this little tin box with the only link to that file off floating in the free disk space. Well, 3CPU, we better go find him before he gets allocated by someone else." The two set off, and finaly traced RS232 to the home of PDP-1 Kenobi, who was busily trying to run an Icheck on the little RS unit. "Is this thing yours? His indirect address are all goofed up, and the size is gargatious. Leave things like this on the loose, and you'll wind up with dups everywhere. However, I think I've got him fixed up. It seems that he's has a link to a data file on the Are-Em Star. This could help the rebel cause." "I don't care about that," said Luke. "I'm just trying to optimize my uncles scheduler." "Oh, forget about that. Dec Vadic, who is responsible for your fathers death, has probably already destroyed his farm in search of this little RS232. It's time for you to leave this place, join the rebel cause, and become a UNIX wizard! I know a guy by the name of Con Solo, who'll fly us to the rebel base at a price." ------------------------------------------------------------- After sifting through the over-written remaining blocks of Luke's home directory, Luke and PDP-1 sped away from /u/lars, across the surface of the Winchester riding Luke's flying read / write head. PDP-1 had Luke stop at the edge of the cylinder overlooking /usr/spool/uucp. "Unix - to - Unix Copy Program;" said PDP-1. "You will never find a more wretched hive of bugs and flamers. We must be cautious." As our heroes' process entered /usr/spool/news, it was met by a newsgroup of Imperial protection bits. "State your UID." commanded their parent process. "We're running under /usr/guest. This is our first time on this system," said Luke. "Can I see some temporary privileges, please?" "Uh..." "This is not the process you are looking for," piped in PDP-1, using an obscure bug to momentarily set his effective UID to root. "We can go about our business." "This isn't the process we want. You are free to go about your business. Move along!" PDP-1 and Luke made their way through a long and tortuous nodelist (cwruecmp!decvax!ucbvax! harpo!ihnss!ihnsc!ihnss!ihps3!stolaf!borman) to a dangerous netnode frequented by hackers, and seldom polled by Imperial Multiplexers. As Luke stepped up to the bus, PDP-1 went in search of a likely file descriptor. Luke had never seen such a collection of weird and exotic device drivers. Long ones, short ones, ones with stacks, EBCDIC converters, and direct binary interfaces all were drinking data at the bus. "#@{ *&^%^$$#@ ":><" transmitted a particularly unstructured piece of code. "He doesn't like you," decoded his coroutine. "Sorry," replied Luke, beginning to backup his partitions. "I don't like you either. I am queued for deletion on 12 systems." "I'll be careful." "You'll be reallocated!" concatenated the coroutine. "This little routine isn't worth the overhead," said PDP-1 Kenobie, overlaying into Luke's address space. "@$%&(&^%&$$@$#@$AV^$g fdfRW$#@!!!!!!!!!!!!!!!!!" encoded the first coroutine as it attempted to overload PDP-1's input over voltage protection. With a unary stroke of his bytesaber, Kenobie unlinked the offensive code. "I think I've found an I/O device that might suit us." "The name's Con Solo. I hear you're looking for some relocation." "Yes indeed, if it's a fast channel. We must get off this device." "Fast channel? The Milliamp Falcon has made the ARPA gate in less than twelve nodes! Why, I've even outrun cancelled messages. It's fast enough for you, old version." Our heroes, Luke Vaxhacker and PDP-1 Kenobie made their way to the temporary file structure. When he saw the hardware, Luke exclaimed, "What a piece of junk! That's just a paper tape reader!" Luke had grown up on an out of the way terminal cluster whose natives spoke only BASIC, but even he could recognize an old ASR-33. "It needs an EIA conversion at least," sniffed 3CPU, who was (as usual) trying to do several things at once. Lights flashed in Con Solo's eyes as he whirled to face the parallel processor. "I have added a few jumpers. The Milliamp Falcon can run current loops around any Imperial TTY fighter. She is fast enough for you." "Who is your co-pilot?" asked PDP-1 Kenobie. "Two Bacco, here, my Bookie." "Odds aren't good," said the brownish lump beside him, and then fell silent, or over. Luke couldn't tell which way was top underneath all those leaves. Suddenly, RS232 started spacing wildly. They turned just in time to see a write cycle coming down the UNIBUS toward them. "Imperial Bus Signals!" shouted Con Solo. "Let's boot this popsicle stand! Tooie, set clock fast!" "Ok, Con," said Luke. "You said this crate was fast enough. Get us out of here!" "Shut up, kid! Two Bacco, prepare to make the jump into system space! I'll try to keep their buffers full." As the bookie began to compute the vectors into low core, spurious characters appeared around the Milliamp Falcon. "They're firing!" shouted Luke. "Can't you do something?" "Making the jump to system space takes time, kid. One missed cycle and you could come down right in the middle of a pack of stack frames!" "Three to five we can go now," said the bookie. Bright chunks of position independent code flashed by the cockpit as the Milliamp Falcon jumped through the kernel page tables. As the crew breathed a sigh of relief, the bookie started paying off bets. "Not bad, for an acoustically coupled network," remarked 3CPU. "Though there was a little phase jitter as we changed parity." ------------------------------------------------------------- << Princess Linker's capture and rm of /usr/alderaan >> ------------------------------------------------------------- The Milliamp Falcon hurtles on through system space... Con Solo finished checking the various control and status registers, finally convinced himself that they had lost the Bus Signals as they passed the terminator. As he returned from the I/O page, he smelled smoke. Solo wasn't concerned. The Bookie always got a little hot under the collar when he was losing at chess. In fact, RS232 had just executed a particularly clever MOV that had blocked the Bookie's data paths. The Bookie, who had been setting the odds on the game, was caught holding all the cards. A little strange for a chess game... Across the room, Luke was too busy practicing bit-slice technique to notice the commotion. "On a word boundary, Luke," said PDP-1. "Don't just hack at it. Remember, the Bytesaber is the weapon of the Red-eye Night. It is used to trim offensive lines of code. Excess handwaving won't get you anywhere. Listen for the Carrier." Luke turned back to the drone, which was humming quietly in the air next to him. This time Luke's actions complement- ed the drone's attacks perfectly. Con Solo, being an unimaginative hacker, was not impressed. "Forget this bit- slicing stuff. Give me a good ROM blaster any day." "~~j~~ hhji~~," said Kenobie, with no clear inflection. He fell silent for a few seconds, and reasserted his control. "What happened?" asked Luke. "Strange," said PDP-1. "I felt a momentary glitch in the Carrier. It's equalized now." "We're coming up on user space," called Solo from the CSR. As they cruised safely through stack frames, the emerged in the new context only to be bombarded by freeblocks. "What the..." gasped Solo. The screen showed clearly: /usr/alderaan: not found "It's the right inode, but it's been cleared! Twoie, where is the nearest file?" "3 to 5 there is one..." the Bookie started to say, but was interrupted by a bright flash off to the left. "Imperial TTY fighters!" shouted Solo. "A whole DZ of them! Where are they coming from?" "Can't be far from the host system," said Kenobie. "They all have direct EIA connections." As Solo began to give chase, the ship lurched suddenly. Luke noticed the link count was at 3 and climbing rapidly. "This is no regular file," murmured Kenobie. "Look at the ODS directory structure ahead! They seem to have us in a tractor beam." "There's no way we will unlink in time," said Solo. "We're going in." Software for Nothing ==================== by: Brent CJ Britton With appoligies to Mark Knopfler. I waaaant my.. I waaaant my... I waaaant my C-R-T...... Now look at them hackers, That's the way ya' do it. Ya' play with mem'ry that you cannot see. Now that ain't workin, that's the way ya do it. Get your software for nothing and your chips for free. Now that ain't workin, gotta CPU-it. Let me tell ya, them guys ain't dumb. Maybe crash the system with your little finger, Maybe crash the system with your thumb. We got to install micro-data-bases, Gotta make things run like a breeeeze. We gotta help these foreign students, We gotta help these mindless E.E.'s... The little Hacker with the Pepsi and the Munchos: Yeah, buddy, don't like to SHARE... The little Hacker got his own compiler, The little guy don't change his underwear. We got to install the latest debugger, Under budget, and optimiiiiiiized. We got to have more muddy-black coffee, We got a green glow in our eyyyyyyes... I shoulda' learned to play with Pascal. I shoulda' learned to program some. Look at that drive, I'm gonna stick it on the channel, Man, it's better than the old one... And who's up there, what's that? Beeping noises? He's bangin on the keyboard like a chimpanze. Oh that aint workin, that's the way ya do it, Get your software for nothin', get your chips for free. "Real Programmers Don't Use PASCAL" PART I =========================================== (Contributed by Chris Condon BITLIB@YALEVMX) Back in the good old days -- the "Golden Era" of computers, it was easy to separate the men from the boys (sometimes called "Real Men" and "Quiche Eaters" in the literature). During this period, the Real Men were the ones that understood computer programming, and the Quiche Eaters were the ones that didn't. A real computer programmer said things like "DO 10 I=1,10" and "ABEND" (they actually talked in capital letters, you understand), and the rest of the world said things like "computers are too complicated for me" and "I can't relate to computers -- they're so impersonal". (A previous work points out that Real Men don't "relate" to anything, and aren't afraid of being impersonal.) But, as usual, times change. We are faced today with a world in which "little old ladies" can get computers in their microwave ovens, 12-year-old kids can blow Real Men out of the water playing "Asteroids" and "Pac-Man", and anyone can buy and even understand their very own Personal Computer. The Real Programmer is in danger of becoming extinct, of being replaced by high-school students with TRASH-80's. There is a clear need to point out the differences between the typical high-school junior "Pac-Man" player and a Real Programmer. If this difference is made clear, it will give these kids something to aspire to -- a role model, a Father Figure. It will also help explain to the employers of Real Programmers why it would be a mistake to replace the Real Programmers on their staff with 12 - year - old "Pac-Man" players (at a considerable salary savings). LANGUAGES --------- The easiest way to tell a Real Programmer from the crowd is by the programming language he (or she) uses. Real Programmers use FORTRAN. Quiche Eaters use PASCAL. Nicklaus Wirth, the designer of PASCAL, gave a talk once at which he was asked "How do you pronounce your name?". He replied,"You can either call me by name, pronouncing it 'Veert', or call me by value, 'Worth'." One can tell immediately from this comment that Nicklaus Wirth is a Quiche Eater. The only parameter passing mechanism endorsed by Real Programmers is call-by-value-return, as implemented in the IBM\370 FORTRAN-G and H compilers. Real programmers don't need all these abstract concepts to get their jobs done -- they are perfectly happy with a keypunch, a FORTRAN IV compiler, and a beer. * Real Programmers do List Processing in FORTRAN. * Real Programmers do String Manipulation in FORTRAN. * Real Programmers do Accounting (if they do it at all) in FORTRAN. * Real Programmers do Artificial Intelligence programs in FORTRAN. If you can't do it in FORTRAN, do it in assembly language. If you can't do it in assembly language, it isn't worth doing. STRUCTURED PROGRAMMING ---------------------- The academics in computer science have gotten into the "struct- ured programming" rut over the past several years. They claim that programs are more easily understood if the programmer uses some special language constructs and techniques. They don't all agree on exactly which constructs, of course, and the examples they use to show their particular point of view invariably fit on a single page of some obscure journal or another -- clearly not enough of an example to convince anyone. When I got out of school, I thought I was the best programmer in the world. I could write an unbeat- able tic-tac-toe program, use five different computer languages, and create 1000-line programs that WORKED. (Really!) Then I got out into the Real World. My first task in the Real World was to read and understand a 200,000-line FORTRAN program, then speed it up by a factor of two. Any Real Programmer will tell you that all the Structured Coding in the world won't help you solve a problem like that -- it takes actual talent. Some quick observations on Real Programmers and Structured Programming: * Real Programmers aren't afraid to use GOTO's. * Real Programmers can write five-page-long DO loops without getting confused. * Real Programmers like Arithmetic IF statements -- they make the code more interesting. * Real Programmers write self-modifying code, especially if can save 20 nanoseconds in the middle of a tight loop * Real Programmers don't need comments -- the code is obvious. * Since FORTRAN doesn't have a structured IF, REPEAT - UNTIL, or CASE statement, Real Programmers don't have to worry about not using them. Besides, they can be simulated when necessary using assigned GOTO's. Data Structures have also gotten a lot of press lately. Abstract Data Types, Structures, Pointers, Lists, and Strings have become popular in certain circles. Wirth (the above-mentioned Quiche Eater) actually wrote an entire book contending that you could write a program based on data structures, instead of the other way around. As all Real Programmers know, the only useful data structure is the Array. Strings, lists, structures, sets -- these are all special cases of arrays and can be treated that way just as easily without messing up your programing language with all sorts of complications. The worst thing about fancy data types is that you have to declare them, and Real Programming Languages, as we all know, have implicit typing based on the first letter of the (six character) variable name. OPERATING SYSTEMS ----------------- What kind of operating system is used by a Real Programmer? CP/M? God forbid -- CP/M, after all, is basically a toy operating system. Even "little old ladies" and grade school students can understand and use CP/M. Unix is a lot more complicated of course -- the typical Unix hacker never can remember what the "PRINT" command is called this week -- but when it gets right down to it, Unix is a glorified video game. People don't do Serious Work on Unix systems: they send jokes around the world on UUCP-net and write adventure games and research papers. No, your Real Programmer uses OS\370. A good programmer can find and understand the description of the IJK305I error he just got in his JCL manual. A great programmer can write JCL without referring to the manual at all. A truly outstanding programmer can find bugs buried in a 6 megabyte core dump without using a hex- calculator. (I have actually seen this done.) OS is a truly remarkable operating system. It's possible to destroy days of work with a single misplaced space, so alertness in the programming staff is encouraged. The best way to approach the system is through a keypunch. Some people claim there is a Time Sharing system that runs on OS\370, but after careful study I have come to the conclusion that they were mistaken. PROGRAMMING TOOLS ----------------- What kind of tools does a Real Programmer use? In theory, a Real Programmer could run his programs by keying them into the front panel of the computer. Back in the days when computers had front panels, this was actually done occasionally. Your typical Real Programmer knew the entire bootstrap loader by memory in hex, and toggled it in whenever it got destroyed by his program. (Back then, memory was memory -- it didn't go away when the power went off. Today, memory either forgets things when you don't want it to, or remembers things long after they're better forgotten.) Legend has it that Seymore Cray, inventor of the Cray I supercomputer and most of Control Data's computers, actually toggled the first operating system for the CDC7600 in on the front panel from memory when it was first powered on. Seymore, needless to say, is a Real Programmer. One of my favorite Real Programmers was a systems programmer for Texas Instruments. One day he got a long distance call from a user whose system had crashed in the middle of saving some important work. Jim was able to repair the damage over the phone, getting the user to toggle in disk I/O instructions at the front panel, repairing system tables in hex, reading register contents back over the phone. The moral of this story: while a Real Programmer usually includes a keypunch and lineprinter in his toolkit, he can get along with just a front panel and a telephone in emergencies. In some companies, text editing no longer consists of ten engineers standing in line to use an 029 keypunch. In fact, the building I work in doesn't contain a single keypunch. The Real Programmer in this situation has to do his work with a "text editor" program. Most systems supply several text editors to select from, and the Real Programmer must be careful to pick one that reflects his personal style. Many people believe that the best text editors in the world were written at Xerox Palo Alto Research Center for use on their Alto and Dorado computers. Unfortunately, no Real Programmer would ever use a computer whose operating system is called SmallTalk, and would certainly not talk to the computer with a mouse. Some of the concepts in these Xerox editors have been incorpor- ated into editors running on more reasonably named operating systems -- EMACS and VIbeing two. The problem with these editors is that Real Programmers consider "what you see is what you get" to be just as bad a concept in Text Editors as it is in women. No the Real Programmer wants a "you asked for it, you got it" text editor -- complicated, cryptic, powerful, unforgiving, dangerous. TECO, to be precise. It has been observed that a TECO command sequence more closely resembles transmission line noise than readable text. One of the more entertaining games to play with TECO is to type your name in as a command line and try to guess what it does. Just about any possible typing error while talking with TECO will probably destroy your program, or even worse -- introduce subtle and mysterious bugs in a once working subroutine. For this reason, Real Programmers are reluctant to actually edit a program that is close to working. They find it much easier to just patch the binary object code directly, using a wonderful program called SUPERZAP (or its equivalent on non-IBM machines). This works so well that many working programs on IBM systems bear no relation to the original FORTRAN code. In many cases, the original source code is no longer available. When it comes time to fix a program like this, no manager would even think of sending anything less than a Real Programmer to do the job -- no Quiche Eating structured programmer would even know where to start. This is called "job security". Some programming tools NOT used by Real Programmers: * FORTRAN preprocessors like MORTRAN and RATFOR. The Cuisinarts of programming -- great for making Quiche. See comments above on structured programming. * Source language debuggers. Real Programmers can read core dumps. * Compilers with array bounds checking. They stifle creat- ivity, destroy most of the interesting uses for EQUI- VALENCE, and make it impossible to modify the operating system. code with negative subscripts. Worst of all, bounds checking is inefficient. * Source code maintenance systems. A Real Programmer keeps his code locked up in a card file, because it implies that its owner cannot leave his important programs unguarded. OP CODES PART I (A - Q) ======================= (Contributed By Knappy 8350428 @ UWAVM) mnemonic meaning -------- ------- AAC Alter All Commands AAD Alter All Data AAO Add And Overflow AAR Alter At Random AB Add Backwards ABR Add Beyond Range ACC Advance CPU clock ACQT Advance Clock to Quitting Time ADB Another Damn Bug [UNIX] AEE Absolve engineering errors AFF Add Fudge Factor AFHB Align Fullword on Halfword Boundary AFP Abnormalized Floating Point AFVC Add Finagle's Variable Constant "the constant that must be added to make your data support your conclusions" AGB Add GarBage AI Add Improper AIB Attack Innocent Bystander AMM Answer My Mail AOI Annoy Operator Immediate AR Alter Reality ARNZ Add & Reset to Non-Zero ARZ Add & Reset to Zero AS Add Sideways AT Accumulate Trivia AWP Argue With Programmer AWTT Assemble With Tinker Toys BAC Branch to Alpha Centauri BAF Blow All Fuses BAH Branch And Hang BALC Branch And Link Cheeseburger BAW Bells And Whistles BB Branch on bug BBB Burn Baby Burn BBBB Byte Baudy Bit and Branch BBI Branch on Blinking Indicator BBL Branch on Burned-out Lamp BCB Burp and Clear Bytes BCBF Branch on Chip Box Full BCIL Branch Creating Infinite Loop BCR Backspace Card Reader BCU Be Cruel and Unusual BD Backspace Disk BDC Break Down and Cry BDM Branch and Disconnect Memory BDT Branch on Dumb Terminal BDT Burn Data Tree [next opcode after Decorate Data Tree BDU Branch on Dumb User BE Branch Everywhere [As in HHGttG's Infinite Improbability Computer" BF Belch Fire BH Branch and Hang BIRM Branch on Index Register Missing BLC Branch and Loop Continuous BLM Branch, Like, Maybe BLMWM Branch, Like, Maybe, Wow, Man BLR Branch and Lose Return BM Branch Maybe BMI Branch on Missing Index BNA Branch to Nonexistent Address BNR Branch for No Reason BOA Branch on Operator Absent BOD Branch on Operator Desperate BOHP Bribe Operator for Higher Priority BOP Boot OPerator BPD Branch on Programmer Debugging BPIM Bury Programmer In Manuals BPO Branch on Power Off BR Byte and Run BRA BRanch Anywhere BRA Branch to Random Address BRI BRanch Indefinitely BRO BRanch to Oblivion BRP Branch on Real Programmer BRT BRanch on Tuesdays BSC Burst Selector Channel BSM Branch and Scramble Memory BSO Branch on Sleepy Operator BSP BackSpace Printer BST Backspace & Stretch Tape BTD Byte The Dust BTJ Branch & Turn Japanese BTO Branch To Oblivion BW Branch on Whim BWABL Bells, Whistles And Blinking Lights BWOP BeWilder OPerator CAF Convert Ascii to Farsic CAI Corrupt Accounting Information CAIL Crash After I Leave CAT Confused And Tired [UNIX] CBA Compare & Branch Anyway CBNC Close, But No Cigar CBS Clobber BootStrap CC Call Calvary CC Crappy Control [UNIX] CCB Consult Crystal Ball CCCP Conceal Condition-Codes Permanently CCD Choke, Cough and Die CCD Clear Current Directory "this may really exist!" CCD Clear Core and Dump CCR Change Channels Random CCS Chinese Character Set CCWR Change Color of Write Ring CDR Complement Disk Randomly CFS Corrupt File Structure CG Convert to Garbage CH Create Havoc CHAPMR CHAse Pointers Around Machine Room CIB Change Important Byte CIMM Create Imaginary Memory Map CM Circulate memory CMD CPU Melt Down CMD Compare Meaningless Data CMI Clobber Monitor Immediately CML Compute Meaning of Life (42) CMP Create Memory Prosthesis CMS Click MicroSwitch CN Compare Nonsensically CNB Cause Nervous Breakdown COLB Crash for Operator's Lunch Break COMF COMe From COS Copy Object Code to Source File COWHU Come Out With your Hands Up CP%FKM CPU - Flakeout mode CP%WM CPU - Weird Mode CPB Create Program Bug CPR Compliment PRogrammer ("Aren't you cute!") CPSN Change Processor Serial Number CRASH Continue Running after Stop or Halt CRM Clear Random Memory CRN Convert to Roman Numerals [IBM Italy only] CRYPT reCuRsive encrYPt Tape mnemonic [UNIX] CS Crash System CSL Curse and Swear Loudly CSN Call Supervisor Names CSNIO Crash System on Next I/O CSU Call Self Unconditional " the ultimate in recursive programming" CSYS Crash SYStem CTDMR Change Tape Density, Mid Record CUC Cheat Until Caught CVFL Convert Floating to Logical CVFP ConVert FORTRAN to PASCAL CVG ConVert to Garbage CVU ConVert to Unary CWAH Create Woman And Hold CWDC Cut Wires and Drop Cores DA Develop Amnesia DAP De-select Active Peripheral DAUF Delete All Useless Files "would YOU trust a computer that far ???" DBL Desegregate Bus Lines DBR Debase Register DBZ Divide By Zero DC Degauss Core DC Divide and Conquer DCAD Dump Core And Die DCD Drop Cards Double DCGC Dump Confusing Garbage to Console DCI Disk Crash Immediate DCON Disable CONsole DCT Drop Cards Triple DCWPDGD Drink Coffee, Write Program, Debug, Get Drunk DD Destroy Disk DDC Daily During Calculations DDOA Drop Dead On Answer DDS Delaminate Disk Surface DEB Disk Eject Both DEC Decompile Executable Code DEI Disk Eject Immediate DEM Disk Eject Memory DES Disk Eject Swapped DHTPL Disk Head Three Point Landing DIA Develop Ineffective Address DIIL Disable Interrupts and enter Infinite Loop DIRFW Do It Right For Once DISC DISmount CPU DJ Deferred Jump DK Destroy Klingons DK%WMM Disk Unit - Washing Machine Mode DKP Disavow Knowledge of Programmer DLN Don't Look Now... DLP Drain Literal Pool DMPE Decide to Major in Physical Education DMPK Destroy Memory Protect Key DO Divide & Overflow DOC Drive Operator Crazy DPC Decrement Program Counter DPMI Declare Programmer Mentally Incompetent DPR Destroy Program DPS Disable Power Supply DRAF DRAw Flowchart DRI Disable Random Interrupt DRT Disconnect Random Terminal DS Deadlock System DSH Destroy Sector Header DSI Do Something Interesting DSPK Destroy Storage Protect Key DSR Detonate Status Register DSTD Do Something Totally Different DSUIT Do Something Utterly, Indescribably Terrible DT%FFP DecTape - unload and Flappa-FlaP DT%SHO DecTape - Spin Hubs Opposite DTC Destroy This Command DTI Do The Impossible DTRT Do The Right Thing DTVFL Destroy Third Variable From Left DU Dump User DUD Do Until Dead DVC Devaluate Computer DW Destroy Work DW Destroy World DWIM Do What I Mean DWIT Do What I'm Thinking DWL Define Word Length DWLZ Define Word Length Zero EBRS Emit Burnt Resistor Smell EC Eat card EC Eject Carriage ECI Execute Current Instruction ECL Early Care Lace ECO Electrocute Computer Operator ECP Erase Card Punch ED Eject Disk ED Execute Data [UNIX] EDD Eat Disk and Die EDIT Erase Data and Increment Time EDR Execute Destructive Read EDS Execute Data Segment EEP Erase Entire Program EFD Eject Floppy Disk EIAO Execute In Any Order EIO Erase I/O page EIOC Execute Invalid OpCode EIP Execute Programmer Immediately EJD%V EJect Disk with initial velocity V ELP Enter Loop Permanently EM Emulate 407 EM Evacuate Memory EMSL Entire Memory Shift Left EMT Electrocute Maintenance Technician EMW Emulate Matag washer ENF Emit Noxious Fumes ENH Execute No-op & Hang EO Execute Operator EOI Execute Operator Immediate EP Execute Programmer EPI Execute Programmer Immediate EPP Eject Printer Paper EPS Electrostatic Print and Smear EPS Execute Program Sideways EPT Erase Process Table EPT Erase Punched Tape ERI Execute Random Instruction ERIC Eject Random Integrated Circuit EROS Erase Read Only Storage "Sounds like an IBM special!" ESB Eject Selectric Ball "from IBM selectric typewriter terminals" ESL Exceed Speed of Light ETI Execute This Instruction [for recursive programs" ETM Emulate Turing Machine EVC Execute Verbal Commands EWD Execute Warp Drive EXX A real instruction on the Zilog Z-80 -Zilog is owned by EXX on" FB Find Bugs FCJ Feed Card and Jam FDR Fill Disk Randomly FFF Form Feed Forever FLD FLing Disc FLI Flash Lights Impressively FM Forget Memory FMP Finish My Program FOPC [Set] False Out-of-paper Condition FPC Feed Paper Continuously FPT Fire Photon Torpedoes FRG Fill with Random Garbage FSM Fold, Spindle and Mutilate FSRA Forms Skip & Run Away GBB Go to Back of Bus GCAR Get Correct Answer Regardless GDP Grin Defiantly at Programmer GDR Grab Degree and Run GENT GENerate Thesis GESE Generate Exciting Sound Effects GEW{JO} Go to the End of the World {Jump Off} GID Generate Input Device GIE Generate Irreversible Error GLC Generate Lewd Comment GMC Generate Machine Check GMCC Generate Machine Check and Cash GND Guess at Next Digit GOD Generate Output Device GORS GO Real Slow GRAB Generate Random Address & Branch GREM Generate Random Error Message GREP Global Ruin, Expiration and Purgation [UNIX] GRMC Generate Rubber Machine Check GS Get Strange [ randomly inverts bits being fed to the instruction decoder" GSB Gulp and Store Bytes GSI Generate Spurious Interrupts GSU Geometric Shift Up HAH Halt And Hang HCF Halt & Catch Fire HCP Hide Central Processor [ makes virtual CPU's act like virtual memories" HCRS Hang in Critical Section HDO Halt and Disable Operator HDRW Halt and Display Random Word HELP Type "No help available" HF Hide a File HGD Halt, Get Drunk HHB Halt and Hang Bus HIS Halt in Impossible State HOO Hide Operator's Output HRPR Hang up and Ruin Printer Ribbon HUAL Halt Until After Lunch IA Illogical And IAI Inquire and ignore IAND Illogical And IBR Insert Bugs at Random ICB Interrupt, crash and burn ICM Immerse Central Memory ICMD Initiate Core Melt-Down ICSP Invert CRT Screen Picture IDC Initiate Destruct Command IDI Invoke Divine Intervention IDPS Ignore Disk Protect Switch IEOF Ignore End Of File IF Invoke Force IGI Increment Grade Immediately IGIT Increment Grade Immediately Twice II Inquire and Ignore IIB Ignore Inquiry & Branch IIC Insert Invisible Characters IIL Irreversable Infinite Loop IM Imagine Memory IMPG IMPress Girlfriend INCAM INCrement Arbitrary Memory location INOP Indirect No-op IO Illogical Or IOI Ignore Operator's Instruction IOP Interrupt processor, Order Pizza IOR Illogical OR IP Increment and Pray IPS Incinerate Power Supply IPS Increment Processor Status IPT Ignite Paper Tape IRB Invert Record & Branch IRB Invert Record and Branch IRC Insert Random Commands IRE Insert Random Errors IRPF Infinite Recursive Page Fault ISC Ignore Supervisor Calls ISC Insert Sarcastic Comments ISI Ignore Silly Instructions ISI Increment and Skip on Infinity ISP Increment and Skip on Pi ITML Initiate Termites into Macro Library IU Ignore User JAA Jump Almost Always JFM Jump on Full Moon JHRB Jump to H&R Block JIL Jump In Lake JM Jump Maybe JMAT JuMp on Alternate Thursdays JNL Jump when programmer is Not Looking JOM Jump Over Moon JRAN Jump RANdom [ not to be confused with IRAN - Idiots random" JRCF Jump Relative and Catch Fire JRGA Jump Relative and Get Arrested JRN Jump RaNdom JRSR Jump to Random Subroutine JT Jump if Tuesday JTR Jump To Register JTZ Jump to Twilight Zone JUMP don't JUMP JWN Jump When Necessary KCE Kill Consultant on Error KUD Kill User's Data LAGW Load And Go Wrong LAP Laugh At Program(mer) LBTPS Let's Blow This Popsicle Stand (Context switch) LCC Load & Clear Core LCD Load and Clear Disk LCK Lock Console Keyswitch LEB Link Edit Backwards LIA Load Ineffective Address LMB Lose Message & Branch LMO Load and Mug Operator LMYB Logical MaYBe LN Lose inode Number [UNIX] LOSM Log Off System Manager LP%PAS Line Printer - Print And Smear LP%RDD Line Printer - Reverse Drum Direction LP%TCR Line Printer - Tangle and Chew Ribbon LPA Lead Programmer Astray LRD Load Random Data LSBL Lose Super BLock [UNIX only] LSPSW Load and scrample PSW LWM Load Write-only Memory MAB Melt Address Bus MAN Make Animal Noises MAZ Multiply Answer by Zero MBC Make Batch Confetti MBH Memory Bank Hold-up MBTD Mount Beatles on Tape Drive MBTOL Move Bugs to Operator's Lunch MC Move Continuous MD Move Devious MDB Move & Drop Bits MDDHAF Make Disk Drive Hop Across Floor MLP Multiply and Lose Precision MLR Move & Loose Record MLSB Memory Left Shift & Branch MMLG Make Me Look Good MNI Misread Next Instruction MOP Modify Operator's Personality MOU MOunt User [causes computer to screw you once again] MOVC Move Computer MPLP Make Pretty Light Pattern MSGD Make Screen Go Dim MSIP Make Sure Plugged In MSR Melt Special Register MST Mount Scotch Tape MT%HRDV MagTape - High speed Rewind and Drop Vacuum MTI Make Tape Invalid MW Malfunction Whatever MWC Move & Wrap Core MWT Malfunction Without Telling NEGP NEGate Programmer NTGH Not Tonight, I've Got a Headache OCF Open Circular File OH OverHeat OML Obey Murphy's Law OPP Order Pizza for Programmer OSI Overflow Stack Indefinitely OTL Out To Lunch PADZ Pack Alpha & Drop Zones PAS Print And Smear PAUD PAUse Dramatically PAZ Pack Alpha Zone PBC Print & Break Chain PBD Print and Break Drum PBM Pop Bubble Memory PBPBPBP Place Backup in Plain Brown Paper Bag, Please " for stealing code" PBST Play Batch mode Star Trek PCI Pleat Cards Immediate PCR Print and Cut Ribbon PD Punch Disk PEHC Punch Extra Holes in Cards PFE Print Floating Eye [Roguers look out!] PFML Print Four Million Lines PI Punch Invalid PIBM Pretend to be an IBM PIC Print Illegible Characters PIC Punch Invalid Character PIRI Print In Red Ink PLSC Perform light show on console PNRP Print Nasty Replies to Programmer PO Punch Operator PPA Print Paper Airplanes PPL Perform Perpetual Loop PPP Print Programmer's Picture PPSW Pack program status word PRS PRint and Smear PSP Print and Shred Paper PSP Push Stack Pointer PSR Print and Shred Ribbon QBB Query Bit Bucket QWA Quit While Ahead